package com.ruoyi.mall.product.domain.service;

import com.ruoyi.mall.product.domain.entity.PmsAttr;
import com.ruoyi.mall.product.domain.entity.PmsAttrGroup;
import com.ruoyi.mall.product.domain.vo.PmsAttrGroupAttrsVo;
import com.ruoyi.mall.product.domain.vo.PmsAttrGroupVo;
import com.ruoyi.mall.product.domain.vo.TreeSelect;

import java.util.List;

/**
 * 属性分组Service接口
 *
 * @author zhangqishu
 * @date 2022-05-25
 */
public interface IPmsAttrGroupService {
    /**
     * 查询属性分组
     *
     * @param id 属性分组主键
     * @return 属性分组
     */
    public PmsAttrGroup selectPmsAttrGroupById(Long id);

    /**
     * 查询属性分组列表
     *
     * @return 属性分组集合
     */
    public List<PmsAttrGroup> selectPmsAttrGroupList(PmsAttrGroup pmsAttrGroup);

    /**
     * 新增属性分组
     *
     * @param pmsAttrGroup 属性分组
     * @return 结果
     */
    public int insertPmsAttrGroup(PmsAttrGroup pmsAttrGroup);

    /**
     * 修改属性分组
     *
     * @param pmsAttrGroup 属性分组
     * @return 结果
     */
    public int updatePmsAttrGroup(PmsAttrGroup pmsAttrGroup);

    /**
     * 批量删除属性分组
     *
     * @param ids 需要删除的属性分组主键集合
     * @return 结果
     */
    public int deletePmsAttrGroupByIds(Long[] ids);

    /**
     * 删除属性分组信息
     *
     * @param id 属性分组主键
     * @return 结果
     */
    public int deletePmsAttrGroupById(Long id);

    /**
     * 查询分组关联关系
     *
     * @param attrGroupId
     * @return
     */
    List<PmsAttr> selectPmsAttrGroupRelation(Long attrGroupId);

    /**
     * 删除分组关联关系
     * @param pmsAttrGroupVo
     * @return
     */
    int deletePmsAttrGroupRelation(PmsAttrGroupVo[] pmsAttrGroupVo);

    /**
     * 获取当前分组没有关联的
     * @param attrGroupId
     * @return
     */
    List<PmsAttr> selectPmsAttrGroupRelationNot(PmsAttr pmsAttr,Long attrGroupId);

    /**
     * 新增关联关系
     * @param pmsAttrGroupVos
     * @return
     */
    int insertPmsAttrGroupRelation(List<PmsAttrGroupVo> pmsAttrGroupVos);

    List<PmsAttrGroupAttrsVo> listWithAttr(Long categoryId);
}
